package com.yupi.yupicturebackend.model.dto.blockchain;

import lombok.Data;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * NFT配置
 *
 * @author yupi
 */
@Data
public class NFTConfig implements Serializable {

    /**
     * NFT名称
     */
    private String name;

    /**
     * NFT描述
     */
    private String description;

    /**
     * 创作者
     */
    private String creator;

    /**
     * 创作者地址
     */
    private String creatorAddress;

    /**
     * 合约地址
     */
    private String contractAddress;

    /**
     * 区块链网络 (ethereum, polygon, bsc)
     */
    private String network = "polygon";

    /**
     * NFT属性
     */
    private List<NFTAttribute> attributes;

    /**
     * 外部链接
     */
    private String externalUrl;

    /**
     * 版税比例 (0-10000, 表示0%-100%)
     */
    private Integer royaltyBps = 500; // 5%

    /**
     * 版税接收地址
     */
    private String royaltyRecipient;

    /**
     * 是否可交易
     */
    private Boolean tradeable = true;

    /**
     * 是否可转移
     */
    private Boolean transferable = true;

    /**
     * 稀有度等级
     */
    private String rarity = "common";

    /**
     * 系列/集合名称
     */
    private String collection;

    /**
     * 标签
     */
    private List<String> tags;

    /**
     * 自定义元数据
     */
    private Map<String, Object> customMetadata;

    private static final long serialVersionUID = 1L;

    /**
     * NFT属性
     */
    @Data
    public static class NFTAttribute implements Serializable {
        private String traitType;
        private Object value;
        private String displayType;
        private Integer maxValue;
        
        private static final long serialVersionUID = 1L;
    }
}
